package DALFacades;

import java.util.Collection;
import java.util.List;

import DomainLayer.*;

public interface IFacade {
	Object GetImageById(String keyString) throws Throwable;

	Object GetLastNView() throws Throwable;

	Object LoadImage(String imageNameString, Object imageByteArray)
			throws Throwable;

	void DeleteImage(String imageNameString) throws Throwable;

	// List<MessageEntity> GetMessagesByUserId(final String userIdString) throws
	// Throwable;
	// void AddNotification(final String contentString) throws Throwable;

	UserEntity GetUserEntityByLoginAndPassword(final String login,
			final String password) throws Throwable;

	Collection<AbstractEntity> GetFeedBackEntity() throws Throwable;

	Boolean SetFeedBackEntity(String message, String from, String page)
			throws Throwable;

	UserEntity AuthentificationByLoginAndPassword(final String login,
			final String password) throws Throwable;

	Boolean UpdateUser(final UserEntity user) throws Throwable;

	// Boolean AddMessage(String message,
	// String userIdForm,
	// String userIdTo,
	// boolean isPrivate) throws Throwable;

	UserEntity GetUserById(int id);

	ICommentable GetICommentableObjectByIdAndType(int id, String objectType);

	Boolean AddCommentary(ICommentable entity) throws Throwable;

    Boolean RemoveCommentary(Integer commentaryId) throws Throwable;

	Boolean AddUser(String firstName, String secondName, String middleName,
			String login, String password, String gender, Integer age,
			String sessionId, String lastIP) throws Throwable;

	Boolean ChangeUser(String firstName, String secondName, String middleName,
			String login, String password, String gender, Integer age)
			throws Throwable;

	Collection<AbstractEntity> GetFirstTenMovies() throws Throwable;

	Collection<AbstractEntity> GetMovies(String searchQuery) throws Throwable;

	Boolean AddMovie(BaseMovieEntity movie) throws Throwable;

    CommentaryEntity GetCommentaryById(int id);

    Boolean UpdateCommentary(CommentaryEntity commentaryEntity);
}
